﻿///<copyright>
/// Copyright © 2009 Stephen Styrchak. All Rights Reserved.
///</copyright>
namespace Ferpect.ComponentModel.Design
{
    public static class Serializers
    {
        // Ferpect.ComponentModel Types
        private const string ScreenManager = "Ferpect.ComponentModel.ScreenManager";
        private const string MenuScreen = "Ferpect.ComponentModel.Menus.MenuScreen";
        private const string Screen = "Ferpect.ComponentModel.Screen";

        // Ferpect.ComponentModel.Design Types
        private const string ScreenManagerControl = "Ferpect.ComponentModel.Design.ScreenManagerControl";
        private const string MenuScreenControl = "Ferpect.ComponentModel.Design.MenuScreenControl";
        private const string ScreenControl = "Ferpect.ComponentModel.Design.ScreenControl";
        private const string ViewTypeCodeDomSerializer = "Ferpect.ComponentModel.Design.Serialization.ViewTypeCodeDomSerializer";
        private const string ViewControlCodeDomSerializer = "Ferpect.ComponentModel.Design.Serialization.ViewControlCodeDomSerializer";
        internal const string MenuCodeDomSerializer = "Ferpect.ComponentModel.Design.Serialization.MenuCodeDomSerializer";

        // Assembly Qualified Names
        private const string ScreenManagerControlAssemblyQualifiedName = ScreenManagerControl + ", " + AssemblyRefs.FerpectComponentModelDesign;
        private const string ScreenManagerAssemblyQualifiedName = ScreenManager + ", " + AssemblyRefs.FerpectComponentModel;
        private const string MenuScreenControlAssemblyQualifiedName = MenuScreenControl + ", " + AssemblyRefs.FerpectComponentModelDesign;
        private const string MenuScreenAssemblyQualifiedName = MenuScreen + ", " + AssemblyRefs.FerpectComponentModel;
        private const string ScreenControlAssemblyQualifiedName = ScreenControl + ", " + AssemblyRefs.FerpectComponentModelDesign;
        private const string ScreenAssemblyQualifiedName = Screen + ", " + AssemblyRefs.FerpectComponentModel;

        /// <summary>
        /// The fully-qualified name of the ScreenManager's type serializer. This serializer serializes/deserializes the class declaration.
        /// </summary>
        internal const string ScreenManagerTypeSerializer = ViewTypeCodeDomSerializer + "`1[[" + ScreenManagerControlAssemblyQualifiedName + "]]";
        internal const string MenuScreenTypeSerializer = ViewTypeCodeDomSerializer + "`1[[" + MenuScreenControlAssemblyQualifiedName + "]]";
        internal const string ScreenTypeSerializer = ViewTypeCodeDomSerializer + "`1[[" + ScreenControlAssemblyQualifiedName + "]]";
        /// <summary>
        /// The fully-qualified name of the ScreenManagerControl's serializer. This serializer serializes/deserializes the properties of the instance.
        /// </summary>
        internal const string ScreenManagerControlSerializer = ViewControlCodeDomSerializer + "`2[[" + ScreenManagerControlAssemblyQualifiedName + "], [" + ScreenManagerAssemblyQualifiedName + "]]";
        internal const string MenuScreenControlSerializer = ViewControlCodeDomSerializer + "`2[[" + MenuScreenControlAssemblyQualifiedName + "], [" + MenuScreenAssemblyQualifiedName + "]]";
        internal const string ScreenControlSerializer = ViewControlCodeDomSerializer + "`2[[" + ScreenControlAssemblyQualifiedName + "], [" + ScreenAssemblyQualifiedName + "]]";
    }
}
